# coding=utf-8

import random
import sys


def get_surname():
    """
    获取一个姓氏,这里使用的是元组，元组跟列表的区别是元组的值是固定的，长度不能也不能改变
    :return:
    """
    surnames = ('赵', '钱', '孙', '李', '周', '吴', '郑', '王')
    return surnames[random.randint(0, len(surnames) - 1)]


def create_chinese_name(length: int = 0, surname: str = ''):
    """
    创建一个中国式的姓名，
    :param length:  生成的长度
    :param surname: 指定姓氏
    :return:
    """
    if not surname:
        surname = get_surname()

    # 声明名字
    names = {
        # 男生
        "man": ['星', '鹏', '思', '明', '景', '逸', '翔', '恬', '锐', '焦', '祺', '祥', '擎', '轩', '志', '勇'],
        # 女生
        "woman": ["容", "韶", '彩', '黛', '芸', '爱', '露', '青', '妮', '姿', '珍', '倩']
    }

    # 获取名字的长度
    if length == 0:
        length = random.randint(1, 2)

    # 获取命令行参数，可能没有传递，这随机生成
    try:
        # 传递了也可能传递的不规范，所以需要加一些判断
        gender = sys.argv[1]
        if gender == 'man' or gender == 1 or gender == 'boy':
            gender = 'man'
        else:
            gender = 'woman'
    except IndexError as e:
        # 随机生成性别
        gender = "man" if random.randint(1, 2) == 1 else "woman"

    # 根据性别取出名字
    gender_names = names[gender]
    # 声明一个字符串变量，用于保存名字
    name = ''
    while True:
        # 随机取出一个字
        name += gender_names[random.randint(0, len(gender_names) - 1)]
        # 判断是否达到长度，达到了则break掉  break打断循环，不然就是个死循环
        if len(name) >= length:
            break
    surname += name

    return surname
